﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using Controladora;
using Entidades.Seguridad;
using Entidades.Sistema;

namespace Vista.Sistema
{
    public partial class FormGestionarMateriaPrima : Form
    {
        private Entidades.Seguridad.Usuario _Usuario;
        private ReadOnlyCollection<Entidades.Seguridad.Perfil> _Perfiles;
        private static FormGestionarMateriaPrima instancia;
        
        BindingSource bsMatprima;
        ReadOnlyCollection<Entidades.Sistema.MateriaPrima> colMateriaPrima;

        public static FormGestionarMateriaPrima obtener_instancia(Entidades.Seguridad.Usuario oUsuario)
        {
            if (instancia == null)
                instancia = new FormGestionarMateriaPrima(oUsuario);
            if (instancia.IsDisposed)
                instancia = new FormGestionarMateriaPrima(oUsuario);

            return instancia;
        }

        public FormGestionarMateriaPrima(Entidades.Seguridad.Usuario oUsuario)
        {
            InitializeComponent();
            _Usuario = new Entidades.Seguridad.Usuario();
            _Usuario = oUsuario;

            _Perfiles = Controladora.Seguridad.CUIniciarSesion.ObtenerInstancia().RecuperarPerfilesGrupos(_Usuario);


            this.CenterToScreen();

            foreach (Entidades.Seguridad.Perfil perfil in _Perfiles)
            {
                if (this.Text == perfil.Formulario.Nombre)
                {
                    foreach (Control control in this.Controls)
                    {
                        if (control is Button)
                        {
                            Button boton = (Button)control;

                            if (perfil.Permiso.Nombre == boton.Text) boton.Enabled = true;
                        }
                    }
                }
            }
        }

        private void FormGestionarMateriaPrima_Load(object sender, EventArgs e)
        {
            CargarGrilla();
        }

        public void CargarGrilla()
        {
            bsMatprima = new BindingSource();
            colMateriaPrima = Controladora.Sistema.CUGestionarMateriaPrima.ObtenerInstancia().ConsultarMateriaprima();
            bsMatprima.DataSource = colMateriaPrima;
            dgvMatPrima.DataSource = bsMatprima;

            dgvMatPrima.Columns["unidad"].Visible = false;
            dgvMatPrima.Columns["tipoMateriaprima"].Visible = false;
            dgvMatPrima.Columns["demanda_anual"].Visible = false;
        }

        private void btnfiltrar_Click(object sender, EventArgs e)
        {

            if (textNombreMP.Text == "" && txtCodigoMP.Text == "")

                {
                    CargarGrilla();
                }

            else

                {

            if (textNombreMP.Text == "")
               {  
 

                int codigo = Convert.ToInt16(txtCodigoMP.Text);

                var query = from MP in colMateriaPrima
                            where (MP.cod_materiaprima.Equals(codigo))
                           select MP;

                bsMatprima.DataSource = query.ToList();
                dgvMatPrima.DataSource = bsMatprima;
               }
            else
                {
                    string nombre = textNombreMP.Text;

                    var query2 = from MP in colMateriaPrima
                                 where (MP.nombre.Contains(nombre))
                                 select MP;

                    bsMatprima.DataSource = query2.ToList();
                    dgvMatPrima.DataSource = bsMatprima;
                }

            }


            //string nombre = textNombreMP.Text;

            //var query2 = from MP in colMateriaPrima
            //            where (MP.nombre.Contains(nombre))
            //            select MP;

            //bsMatprima.DataSource = query2.ToList();
            //dgvMatPrima.DataSource = bsMatprima;
        }

        private void btnagregar_Click(object sender, EventArgs e)
        {
            Vista.Sistema.FormMateriaPrima oFrm = new Vista.Sistema.FormMateriaPrima("Nuevo");
            oFrm.ShowDialog();
            this.CargarGrilla();
        }

        private void btneliminar_Click(object sender, EventArgs e)
        {
            DialogResult dialogo;
            dialogo = MessageBox.Show("¿Esta seguro que desea eliminar la materia prima?", "ADVERTENCIA", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (dialogo == System.Windows.Forms.DialogResult.Yes)
            {
                Controladora.Sistema.CUGestionarMateriaPrima.ObtenerInstancia().EliminarMatprima((Entidades.Sistema.MateriaPrima)bsMatprima.Current);
                this.actualizargrilla();
            }
        }

        private void actualizargrilla()
        {
            this.bsMatprima.ResetBindings(false);
        }

        private void btnmodificar_Click(object sender, EventArgs e)
        {
            if (bsMatprima.Count == 0)
            {
                MessageBox.Show("No hay grupos materia prima para modificar");
            }
            else
            {
                FormMateriaPrima frmmatprima = new FormMateriaPrima("Modificar", (Entidades.Sistema.MateriaPrima)bsMatprima.Current);
                frmmatprima.ShowDialog();
                this.actualizargrilla();
            }
        }

        private void btncerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtCodigoMP_TextChanged(object sender, EventArgs e)
        {

        }

       
    }
}
